package com.epcs.subGNuevosNegocios.eci.struts.action.tree;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

import com.epcs.subGNuevosNegocios.eci.dao.tree.TreeDAOImplement;
import com.epcs.subGNuevosNegocios.eci.struts.action.base.BaseAction;
import com.epcs.subGNuevosNegocios.eci.to.EmpleadoTO;
import com.epcs.subGNuevosNegocios.eci.to.HijounidadTO;
import com.epcs.subGNuevosNegocios.eci.to.UsuarioTO;

public class TreeAction extends BaseAction {
	
	public ActionForward showChilds(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception
    {
		DynaActionForm actionForm = (DynaActionForm) form;
		String idPadre = (String) actionForm.get("idPadre");
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<HijounidadTO> lstHijos = tdi.getHijosUnidad(idPadre);
		request.setAttribute("lstHijos", lstHijos);
	return mapping.findForward("ajaxTree");	
    }
	
	public ActionForward showEmployees(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{

		DynaActionForm actionForm = (DynaActionForm) form;
		Integer nivel = Integer.parseInt(actionForm.get("nivel").toString());
		
		if(nivel.intValue()==1){
			return showUnselectedEmployeesToMantController(mapping, actionForm, request, response);
		}
		if(nivel.intValue()==12){
			return showUnselectedEmployeesNivel12(mapping, actionForm, request, response);
		}
		if(nivel.intValue()==123){
			return showUnselectedEmployeesNivel23(mapping, actionForm, request, response);
		}
		if(nivel.intValue()==2){
			return showUnselectedEmployeesNivel2(mapping, actionForm, request, response);
		}
		
		//Es usuario Controller accediendo a PS (2 perfil controller, 3 prfil ps = 23)
		if(nivel.intValue()==23){
			return showUnselectedEmployeesNivel23(mapping, actionForm, request, response);
		}
	
		if(nivel.intValue()==3 ){
			//return mapping.findForward("ajaxEmployees2");
			return showUnselectedEmployees(mapping, actionForm, request, response);
		}
		String idArea = (String) actionForm.get("idArea");
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleado = tdi.getEmpleadosUnidad(idArea);
		request.setAttribute("lstEmpleado", lstEmpleado);
		
		return mapping.findForward("ajaxEmployees");
		
	}

	public ActionForward showUnselectedEmployees(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{

		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		String idArea = (String) actionForm.get("idArea");
		Integer nivel = Integer.parseInt(actionForm.get("nivel").toString());
		UsuarioTO usuario = (UsuarioTO)session.getAttribute("usuario");
		
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleado = tdi.getEmpleadosUnidadNoClientes(idArea, usuario.getProcesoActivo(),usuario.getRut());
		request.setAttribute("lstEmpleado", lstEmpleado);
		
		return mapping.findForward("ajaxEmployees2");
		
	}
	
	public ActionForward showUnselectedEmployeesNivel12(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{

		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		String idArea = (String) actionForm.get("idArea");
		UsuarioTO usuario = (UsuarioTO)session.getAttribute("usuarioCO");
		
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleado = tdi.getEmpleadosUnidadNoPS(idArea, usuario.getProcesoActivo(),usuario.getRut().trim());
		request.setAttribute("lstEmpleado", lstEmpleado);
		
		return mapping.findForward("ajaxEmployees");
		
	}
	
	public ActionForward showUnselectedEmployeesNivel2(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{

		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		String idArea = (String) actionForm.get("idArea");
		UsuarioTO usuario = (UsuarioTO)session.getAttribute("usuario");
		
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleado = tdi.getEmpleadosUnidadNoPS(idArea, usuario.getProcesoActivo(),usuario.getRut().trim());
		request.setAttribute("lstEmpleado", lstEmpleado);
		
		return mapping.findForward("ajaxEmployees");
		
	}
	
	public ActionForward showUnselectedEmployeesNivel23(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{

		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		String idArea = (String) actionForm.get("idArea");
		Integer nivel = Integer.parseInt(actionForm.get("nivel").toString());
		UsuarioTO usuario = (UsuarioTO)session.getAttribute("usuario");
		UsuarioTO usuarioPS = (UsuarioTO)session.getAttribute("usuarioPS");
		
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleado = tdi.getEmpleadosUnidadNoClientes(idArea, usuarioPS.getProcesoActivo(),usuarioPS.getRut());
		request.setAttribute("lstEmpleado", lstEmpleado);
		
		return mapping.findForward("ajaxEmployees2");
		
	}
	
	public ActionForward showUnselectedEmployeesToMantController(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{

		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		String idArea = (String) actionForm.get("idArea");
		Integer idProceso = Integer.parseInt(actionForm.get("proceso").toString());
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleado = tdi.getEmpleadosNoControllers(idArea, idProceso);
		request.setAttribute("lstEmpleado", lstEmpleado);
		
		return mapping.findForward("ajaxEmployees");
		
	}
	public ActionForward showUnselectedEmployeesExtended(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{

		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		
		String idArea = (String) actionForm.get("idArea");
		Integer nivel = Integer.parseInt(actionForm.get("nivel").toString());
		UsuarioTO usuario = null;
		if(nivel.intValue()==23 || nivel.intValue()==123)
			usuario = (UsuarioTO)session.getAttribute("usuarioPS");
		if(nivel.intValue()==3 || nivel.intValue()==2 || nivel.intValue()==1)
			usuario = (UsuarioTO)session.getAttribute("usuario");
		if(nivel.intValue()==12)
			usuario = (UsuarioTO)session.getAttribute("usuarioCO");
		
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleado = tdi.getEmpleadosUnidadCompleta(idArea, usuario.getProcesoActivo(),usuario.getRut());
		request.setAttribute("lstEmpleado", lstEmpleado);
		
		return mapping.findForward("ajaxEmployees2");
		
	}
	

	
	
	
	
	
	
	
	//Buscador
	public ActionForward buscarAreaPorNombre(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{
		
		DynaActionForm actionForm = (DynaActionForm) form;
		String txtBuscador = (String) actionForm.get("txtBuscador");
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<HijounidadTO> lstUnidades = tdi.getUnidadesBuscador(txtBuscador.trim());
		request.setAttribute("lstUnidades", lstUnidades);
		
		return mapping.findForward("ajaxLista_areas");
	
	}
	
	public ActionForward buscarAreaPorNombreDesdePadre(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{
		
		DynaActionForm actionForm = (DynaActionForm) form;
		String txtBuscador = (String) actionForm.get("txtBuscador");
		String codiUnidad = (String) actionForm.get("idArea");
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<HijounidadTO> lstUnidades = tdi.getUnidadesBuscadorPorPadre(codiUnidad.trim(), txtBuscador.trim());
		request.setAttribute("lstUnidades", lstUnidades);
		
		return mapping.findForward("ajaxLista_areas");
	
	}
	
	public ActionForward buscarEmpleadoPorNombre(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{
		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		String txtBuscador = (String) actionForm.get("txtBuscador");
		Integer nivel = Integer.parseInt(actionForm.get("nivel").toString());
		UsuarioTO usuario = null;
		if(nivel==23 || nivel==123)
			usuario = (UsuarioTO)session.getAttribute("usuarioPS");
		if(nivel==3 || nivel==2 || nivel==1)
			usuario = (UsuarioTO)session.getAttribute("usuario");
		if(nivel==12)
			usuario = (UsuarioTO)session.getAttribute("usuarioCO");
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleados = tdi.getEmpleadosBuscador(txtBuscador.trim(),usuario.getProcesoActivo(),usuario.getRut());
		request.setAttribute("lstEmpleado", lstEmpleados);
		
		return mapping.findForward("ajaxEmployees2");
	
	}
	
	public ActionForward buscarEmpleadoPorNombreNivel2(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response) 
    throws Exception{
		HttpSession session = request.getSession();
		DynaActionForm actionForm = (DynaActionForm) form;
		String txtBuscador = (String) actionForm.get("txtBuscador");
		String codiUnidad = (String) actionForm.get("idArea");
		Integer nivel = Integer.parseInt(actionForm.get("nivel").toString());
		UsuarioTO usuario = null;
		if(nivel.intValue()==23 || nivel.intValue()==123)
			usuario = (UsuarioTO)session.getAttribute("usuarioPS");
		if(nivel.intValue()==3 || nivel.intValue()==2 || nivel.intValue()==1)
			usuario = (UsuarioTO)session.getAttribute("usuario");
		if(nivel.intValue()==12)
			usuario = (UsuarioTO)session.getAttribute("usuarioCO");
		TreeDAOImplement tdi = new TreeDAOImplement();
		List<EmpleadoTO> lstEmpleados = tdi.getEmpleadosBuscadorRaizPadre(codiUnidad, usuario.getRut(), txtBuscador, usuario.getProcesoActivo());
		request.setAttribute("lstEmpleado", lstEmpleados);
		
		return mapping.findForward("ajaxEmployees");
	
	}
}
